#include <func.h>
#include <termios.h>

typedef struct
{
    char user_name[20];//用户名
    char password[20];//密码
    char path[128];//路径:用户名之后的路径
    bool is_login;//登陆状态
} user_t;

enum
{
    LOGIN = 1,//登录
    REGISTER,//注册
    EXIT,//退出
    CD,//进入目录
    LS,//列出文件
    PUTS,//上传
    GETS,//下载
    RM,//删除
    PWD,//显示路径
    MKDIR//创建文件夹
};

typedef struct
{
    int cmd;//命令
    int arg_num;//参数个数
    char arg[1024];//参数：格式：key1=value1&key2=value2 
} portocol_t;

typedef enum {
    LOG_DEBUG,
    LOG_INFO,
    LOG_WARNINGS,
    LOG_ERROR
}LOG_GRADE_t;

//登录
int login(user_t* status, portocol_t* portocol, int socket_fd);

//注册
int regist(user_t* status, portocol_t* portocol, int socket_fd);

//解析stdin
int read_stdin(const user_t* status, portocol_t* portocol, int socket_fd);

//进入目录
int cd(user_t* status, const portocol_t* portocol, int socket_fd);

//列出文件
int ls(const user_t* status, const portocol_t* portocol, int socket_fd);

//上传
//int upload(const user_t* status, const portocol_t* portocol, int socket_fd);
                                                                           
//下载
int download(const user_t* status, const portocol_t* portocol, int socket_fd);
                                                                         
//删除文件
int rm(const user_t* status, const portocol_t* portocol, int socket_fd);

//删除目录
int rm_dir(const user_t* status, const portocol_t* portocol, int socket_fd);

//显示路径
int pwd(const user_t* status, const portocol_t* portocol, int socket_fd);
                                                                           
//创建文件夹
int create_dir(const user_t* status, const portocol_t* portocol, int socket_fd);

//读取配置文件
int getparameter(char* key, char* value);

//写日志
int WRITE_LOG(const LOG_GRADE_t log_grand,  char* remark);
